<?php
abstract class FormElement extends LabelledRenderable implements DefaultValueReader {
	
	private $datastore;
	private $defaultValue;
	
	public function __construct($elementId, $labelText) {
		
		parent::__construct($elementId, $labelText);
		
		$this->datastore = NULL;
		$this->defaultValue = NULL;
	}
	
	public function setDefaultValue($defaultValue) {
	
		$this->defaultValue = $defaultValue;
	}
	
	public function setDataStore(DataStore $datastore) {
	
		$this->datastore = $datastore;
	}
	
	protected function getDefaultValue() {
	
		if ($this->defaultValue != NULL) {
			$defaultValue = $this->defaultValue;
				
		} else if ($this->datastore != NULL) {
			$datastoreValue = $this->datastore->getObject($this->elementId);
			$defaultValue = $datastoreValue == NULL ? '' : $datastoreValue;
				
		} else {
			$defaultValue = '';
		}
	
		return $defaultValue;
	}
}
?>